package tools

import (
	"errors"
	"sync"
)

type assert struct{}

var (
	once     sync.Once
	instance *assert
)

func Assert() *assert {
	once.Do(func() {
		instance = new(assert)
	})
	return instance
}

func (*assert) NotNil(obj any, msg string) {
	if obj == nil {
		panic(errors.New(msg))
	}
}

func (*assert) NotBlank(obj, msg string) {
	if obj == "" {
		panic(errors.New(msg))
	}
}

func (*assert) IsTrue(exp bool, msg string) {
	if !exp {
		panic(errors.New(msg))
	}
}

func (*assert) IsFalse(exp bool, msg string) {
	if exp {
		panic(errors.New(msg))
	}
}
